#pragma once

#include <iostream>
#include <functional>
#include <unordered_map>

using task_t = std::function<void()>;

void Download()
{
    std::cout << "我是下载任务..." << std::endl; 
}

void Log()
{
    std::cout << "我是日志任务..." << std::endl; 
}

void Sql()
{
    std::cout << "我是数据库同步任务..." << std::endl; 
}

static int number = 0;
class TaskManger
{
public:
    TaskManger()
    {
        InsertTask(Download);
        InsertTask(Log);
        InsertTask(Sql);
    }

    // 插入任务
    void InsertTask(task_t t) 
    {
        tasks[number++] = t;
    }

    // 选择任务
    void SelectTask()
    {

    }

    // 执行任务
    void Excute(int number)
    {
        if(tasks.find(number) == tasks.end()) return;
        tasks[number]();
    }

    ~TaskManger(){}
private:
    std::unordered_map<int, task_t> tasks;
};

TaskManger tm;